name: auto-merge
concurrency:
  cancel-in-progress: true
  group: ${{github.workflow}}-${{github.event.pull_request.number}}
on:
  pull_request:
    types: [labeled, opened, reopened, synchronize]
    branches:
      - 'master'
      - 'release-*'
permissions:
  contents: read
jobs:
  approve-and-auto-merge:
    timeout-minutes: 10
    runs-on: ubuntu-latest
    if: contains(github.event.pull_request.labels.*.name, 'ci/auto-merge')
    permissions:
      pull-requests: write
    steps:
      - name: Generate GitHub app token
        id: github-app-token
        uses: actions/create-github-app-token@f4c6bf6752984b3a29fcc135a5e70eb792c40c6b # v1.8.0
        with:
          app-id: ${{ secrets.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}
      - name: Approve PR
        run: gh pr review ${{ github.event.pull_request.number }} -a -R ${{ github.repository }}
        env:
          GITHUB_TOKEN: ${{ github.token }}
      - name: Enable auto-merge
        run: gh pr merge ${{ github.event.pull_request.number }} --auto --squash -R ${{ github.repository }}
        env:
          GITHUB_TOKEN: ${{ steps.github-app-token.outputs.token }}
